package cn.csust.net2.manager.shared.service;

import cn.csust.net2.manager.shared.exception.BeyondAuthorityException;
import cn.csust.net2.manager.shared.po.Vote;
import cn.csust.net2.manager.shared.po.VoteAnswer;
import cn.csust.net2.manager.shared.po.VoteResult;
import cn.csust.net2.manager.shared.util.ServiceConstant;

import com.extjs.gxt.ui.client.data.PagingLoadConfig;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

@RemoteServiceRelativePath(value = ServiceConstant.MANAGER+ServiceConstant.SERVICE_NAME_VOTECOMMON)
public interface VoteCommonService extends BaseService{
	public static final String VOTEID = "voteID";
	
	/*
	 * config 
	 * 参数                                                       说明
	 * studnetNumber 			学号（此学生需要做得投票）
	 * startTime 				开始时间（查询限制条件）
	 * endTime					结束时间（查询限制条件）
	 */
	public PagingLoadResult<Vote> findVotesByPaging(PagingLoadConfig config)throws BeyondAuthorityException;	
	/*
	 * config 参数 “voteID” 
	 * 返回此 vote 的所有voteResult
	 */
	public PagingLoadResult<VoteResult> findVoteResultsByPaging(PagingLoadConfig config)throws BeyondAuthorityException;

	/*
	 * config 参数 “voteID” 
	 * 返回此 vote 的所有voteanswers
	 */
	public PagingLoadResult<VoteAnswer> findVoteAnswersByPaging(PagingLoadConfig config)throws BeyondAuthorityException;
	
	
//	/*
//	 * 考虑到网络传输量问题 ，所以尽量不在config里添加对象而直接添加属性
//	 * 而且很多情况下我们只用到了属性
//	 * config 参数 voteID
//	 * studentNumberList  此为StudentNumber的List<Long>集
//	 * 存入 student_vote 表中
//	 */
//	public void saveStudent_VoteByPaging(PagingLoadConfig config);
	
	/*
	 * config 参数 voteID
	 * 返回student_vote表中 对应 StudentNumber的集合
	 */
	public PagingLoadResult<Long> findStudent_Vote(PagingLoadConfig config)throws BeyondAuthorityException;
	
	/*
	 * 返回 answerID 为l的所有voteresult的数量
	 */
	public int findVoteResultsByAnswerID(Long l) throws BeyondAuthorityException;
	
	/*
	 * 判断student_vote 表中是否有 studentNumber 为l 的记录
	 * 有则返回ture 没有则返回false  
	 */
	public boolean hasVoteResultsByStudnetNumber(Long l)throws BeyondAuthorityException;
	
}
